package com.gxa.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxa.domain.dto.EmployeeDTO;
import com.gxa.domain.entity.Employee;
import com.gxa.domain.vo.EmployeeQueryVO;
import com.gxa.domain.vo.EmployeeVO;

/**
 * 员工服务接口
 */
public interface EmployeeService extends IService<Employee> {
    
    /**
     * 分页查询员工列表
     */
    IPage<Employee> pageQuery(EmployeeQueryVO queryVO);
    
    /**
     * 分页查询员工列表（返回VO）
     */
    IPage<EmployeeVO> pageQueryVO(EmployeeQueryVO queryVO);
    
    /**
     * 添加员工
     */
    boolean addEmployee(EmployeeDTO employeeDTO);
    
    /**
     * 更新员工信息
     */
    boolean updateEmployee(EmployeeDTO employeeDTO);
    
    /**
     * 删除员工
     */
    boolean deleteEmployee(Integer employeeId);
    
    /**
     * 根据员工号查询员工
     */
    Employee getEmployeeById(Integer employeeId);
    
    /**
     * 根据员工号查询员工（返回VO）
     */
    EmployeeVO getEmployeeVOById(Integer employeeId);
    
    /**
     * 根据身份证号查询员工
     */
    Employee getEmployeeByIdCardNo(String idCardNo);
    
    /**
     * 根据RFID卡号查询员工
     */
    Employee getEmployeeByRfidCardNo(String rfidCardNo);
    
    /**
     * 根据用户名或卡号查找员工（支持员工号或RFID卡号）
     */
    Employee findByUsernameOrCardNo(String username);
    
    /**
     * 验证密码
     */
    boolean verifyPassword(String inputPassword, String storedPassword);
    
    /**
     * 根据员工姓名查询员工ID
     */
    Integer getIdByName(String name);
} 